package com.rownext.kernel.logging.impl 
{
	import flash.events.Event;
	
	import com.rownext.kernel.logging.LogLevel;		

	/**
	 * 此事件在<code>ILogger</code>实例相关方法被调用的时候由该实例发出
	 * 
	 * @author Wang Kang
	 */
	public class LogEvent extends Event
	{
		/**
		 * @eventType log
		 */
		public static const LOG:String = "log";

		/**
		 * 事件对象的构造函数
		 * 
		 * @param 事件关联的日志级别，作为是否输出日志的判断条件
		 * @param 事件携带的消息
		 * @param 事件携带的错误对象引用，可以提供出错现场的堆栈信息，可选参数
		 */
		function LogEvent(level:LogLevel, message:String, error:Error = null) 
		{
			super(LOG);
			_level = level;
			_message = message;
			_error = error;
		}

		/**
		 *事件关联的日志级别，作为是否输出日志的判断条件
		 */
		public function get level():LogLevel
		{
			return _level;
		}

		/**
		 * 事件携带的消息
		 */
		public function get message():String 
		{
			return _message;
		}

		/**
		 * 事件携带的错误对象引用，可以提供出错现场的堆栈信息，可能为<code>null</code>值
		 */
		public function get error():Error 
		{
			return _error;
		}

		private var _level:LogLevel;
		private var _message:String;
		private var _error:Error;
	}
}